package wef.PW.module.model;

import wef.PW.utils.RewardUtils;

import java.util.ArrayList;

/**
 * 应用服务数据单元
 */
public class ASDU {

    private String TYP; // 类型标识符 00 两位

    private String VSQ; // 可变结构限定词 00 两位

    private String COT; // 传送原因 00 00 四位

    private String ADR; // 公共地址 00 00 四位

    private String InfoAdr; // 信息对象地址 00 00 00 六位 遥信遥测中叫对象1的地址

    /**
     * 信息对象 可变长度
     * 遥测 00 00 00 六位 前四位测量值 后两位品质描述词
     * 遥信 00 两位 代表单点信息
     * 遥控 00 两位
     */
    private ArrayList<String> INOT;

    public String getReward(){
        return this.TYP + this.VSQ + this.COT + this.ADR + this.InfoAdr + this.INOT.get(0);
    }
    @Override
    public String toString() {
        String s = "";
        if (this.TYP.equals("09")){
            for (String s1: INOT) {
                s = s + "   " + Integer.toString(RewardUtils.getValue(s1.substring(0 , 4)));

            }
        }else if (this.TYP.equals("01")){
            for (String s1: INOT){
                if (s1.equals("01")){
                    s = s + "   " + "合";
                }else {
                    s = s + "   " + "分";
                }
            }
        }

        return "\n          应用服务数据单元(ASDU){" +
                " \n             类型标识符(TYP)='" + TYP + '\'' +
                ",\n             可变帧长限定词(VSQ)='" + VSQ + '\'' +
                ",\n             传送原因(COT)='" + COT + '\'' +
                ",\n             公共地址(ADR)='" + ADR + '\'' +
                ",\n             信息对象地址(InfoAdr)='" + InfoAdr + '\'' +
                ",\n             信息对象体(INOT)=" + INOT + '\'' +
                ",\n             值 =" + s +
                '}';
    }

    public String getTYP() {
        return TYP;
    }

    public void setTYP(String TYP) {
        this.TYP = TYP;
    }

    public String getVSQ() {
        return VSQ;
    }

    public void setVSQ(String VSQ) {
        this.VSQ = VSQ;
    }

    public String getCOT() {
        return COT;
    }

    public void setCOT(String COT) {
        this.COT = COT;
    }

    public String getADR() {
        return ADR;
    }

    public void setADR(String ADR) {
        this.ADR = ADR;
    }

    public String getInfoAdr() {
        return InfoAdr;
    }

    public void setInfoAdr(String InfoAdr) {
        this.InfoAdr = InfoAdr;
    }

    public ArrayList<String> getINOT() {
        return INOT;
    }

    public void setINOT(ArrayList<String> INOT) {
        this.INOT = INOT;
    }
}
